/**
 * Eb163 Flash RPG Webgame Framework
    @author eb163.com
    @email game@eb163.com
    @website www.eb163.com	
 * */
package util
{
	//图片切割
	
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;

	/**
	 * 裁剪工具类
	 * */
	public class HeptaFishCovert
	{
		public function HeptaFishCovert()
		{
		}
		
		/**
		 * 拆分位图
		 * @return Array 返回被拆分的位图数组
		 * @parameter source:Bitmap 要拆分的位图对象
		 * @parameter row:int 要拆分的位图对象的行数
		 * @parameter col:int 要拆分的位图对象的列数
		 * @parameter total:* = null 要拆分的位图对象的总数
		 * */
		public static function divide(source:Bitmap,row:int,col:int,total:* = null):Array {
			/**
			 * 计算出每个小位图对象的宽度	
			 * */
			var w:uint=source.width/row;
			/**
			 * 计算出每个小位图对象的高度	
			 * */
			var h:uint=source.height/col;
			/**
			 * 计算有效位图总数	
			 * */
			total=total==null?col*row:total;
			/**
			 * 定义结果数组	
			 * */
			var result:Array= new Array();
			/**
			 * 定义矩阵	
			 * */
			var matrix:Matrix = new Matrix();
			/**
			 * 定义矩形	
			 * */
			var rect:Rectangle=new Rectangle(0,0,w,h);
			
			var sourceBitmap:BitmapData = source.bitmapData;
			for (var j:int = 0; j < col; j++) 
			{
				for (var i:int = 0; i < row; i++) 
				{
					/**
					 * new出一个白色的小位图对象
					 * */
					var bmp:BitmapData=new BitmapData(w,h,true,0x00000000);
					/**
					 * 将矩阵内的数据按定义好的矩形大小和相应位置,画出小位图对象像素	
					 * */
					//bmp.draw(source,null,null,null,rect,true);
					bmp.copyPixels(sourceBitmap,new Rectangle(i * w,j * h,w,h),new Point(0, 0)); 
					result.push(bmp);
				}
			}
			sourceBitmap.dispose(); 
			return result;
		}
		
		/**
		 * 拆分位图
		 * @return Array 返回被拆分的位图数组
		 * @parameter source:Bitmap 要拆分的位图对象
		 * @parameter row:int 要拆分的位图对象的行数
		 * @parameter col:int 要拆分的位图对象的列数
		 * @parameter total:* = null 要拆分的位图对象的总数
		 * */
		public static function divideBitmapData(source:BitmapData,row:int,col:int,total:* = null):Array {
			/**
			 * 计算出每个小位图对象的宽度	
			 * */
			var w:uint=source.width/row;
			/**
			 * 计算出每个小位图对象的高度	
			 * */
			var h:uint=source.height/col;
			/**
			 * 计算有效位图总数	
			 * */
			total=total==null?col*row:total;
			/**
			 * 定义结果数组	
			 * */
			var result:Array= new Array();
			/**
			 * 定义矩阵	
			 * */
			var matrix:Matrix = new Matrix();
			/**
			 * 定义矩形	
			 * */
			var rect:Rectangle=new Rectangle(0,0,w,h);
			
			var sourceBitmap:BitmapData = source;
			for (var j:int = 0; j < col; j++) 
			{
				for (var i:int = 0; i < row; i++) 
				{
					/**
					 * new出一个白色的小位图对象
					 * */
					var bmp:BitmapData=new BitmapData(w,h,true,0x00000000);
					/**
					 * 将矩阵内的数据按定义好的矩形大小和相应位置,画出小位图对象像素	
					 * */
					//bmp.draw(source,null,null,null,rect,true);
					bmp.copyPixels(sourceBitmap,new Rectangle(i * w,j * h,w,h),new Point(0, 0)); 
					result.push(bmp);
				}
			}
			sourceBitmap.dispose(); 
			return result;
		}
	}
}